package com.czp.user.service;

import com.czp.user.model.RelationRole;
import com.czp.user.model.User;

/**
 *
 * 【描 述】：<一句话功能简述>
 * 【环 境】：J2SE 1.6
 * 
 * @author   柴志鹏
 * @version  version 1.0
 * @since    2014-4-25 新建
 */
public interface IUserService {
	
	/** 
	 * 【描 述】：添加、编辑、注销 用户
	 * @param User实体
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int userController(User user) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id查询用户信息
	 * @param personId 人员Id
	 * @return 人员信息
	 * @throws Exception
	 */
	String getUserInfoByPid(String personId) throws Exception;
	
	/** 
	 * 【描 述】：查询人员关联角色
	 * @param personId人员Id
	 * @return 角色Json
	 * @throws Exception
	 */
	String queryRelationRole(String personId) throws Exception;
	
	/** 
	 * 【描 述】：根据人员Id查询全部被选中角色
	 * @param RelationRole(人员Id, 角色名称)
	 * @return 角色与被选中信息Json
	 * @throws Exception
	 */
	String getSelectedRoleList(RelationRole relRole) throws Exception;
	
	/** 
	 * 【描 述】：授权、取消角色菜单
	 * @param jsonData(角色Id，菜单Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int relationRoleController(String jsonData) throws Exception;
	
	/** 
	 * 【描 述】：批量删除角色授权
	 * @param jsonData(人员Id，角色Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRelationRole(String jsonData) throws Exception;
	
	/** 
	 * 【描 述】：根据角色Id查询关联"菜单"
	 * @param personId人员Id
	 * @return 菜单Json
	 * @throws Exception
	 */
	String queryRelationMenu(String personId) throws Exception;
	
	/** 
	 * 【描 述】：用户登录
	 * @param user(username,password)
	 * @return
	 * @throws Exception
	 */
	User login(String username) throws Exception;
	
	
	/**
	 * 【描 述】：验证用户名是否存在
	 * @param 用户名
	 * @return 存在的数量
	 * @throws Exception
	 */
	int isUserExist(String username) throws Exception;
	
	/** 
	 * 【描 述】：修改密码，判断旧密码是否验证成功。
	 * @param User(id, password, oldPass)
	 * @return 0=失败/1=成功
	 * @throws Exception
	 */
	int modifyPassword(User user) throws Exception;
	
	/** 
	 * 【描 述】：添加登录日志信息
	 * @param 用户名
	 * @param 密码
	 * @param ip地址
	 * @param 状态：
			 0、登录成功
			 1、密码错误：尝试登录密码为xxx
			 2、登录用户已被禁用
			 3、登录失败：用户名不存在，尝试用户xxx
			 //4、清除日志：本次共清楚x条日志信息，操作人为xxx
	 * @return
	 * @throws Exception
	 */
	int addLoginLogInfo(String username, 
			String password, String ip, String status) throws Exception;
}

